<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../vue.2.5.1.js"></script>
</head>

<body>
    <div id="app">
        总数{{total}}</p>
        <my-component v-model="total"></my-component>
        <button @click="handleReduce">- 1</button>
    </div>
    <script>
        Vue.component('my-component', {
            props: ['value'],
            template: '<input :value="value" @input="updateValue">',
            methods: {
                updateValue(event) {
                    this.$emit('input', event.target.value);
                }
            }
        });
        // v-model 还可以用来创建自定义的表单输入组件,进行数据双向
        // 实现这样一个具有双向绑定的 v-model 组件要满足下面两个要求
        // 接收一个 value 属性。
        // 在有新的 value 时触发 input 事件。
        var app = new Vue({
            el: "#app",
            data: {
                total: 0
            },
            methods: {
                handleReduce() {
                    this.total--;
                }
            }
        })
    </script>
</body>

</html>